package com.yidu.hbatsams.action.AtsData;

import com.yidu.hbatsams.dao.AtsBaseSportMapper;
import com.yidu.hbatsams.domain.*;
import com.yidu.hbatsams.service.*;
import com.yidu.hbatsams.service.emp.AtsEmpAthleteService;
import com.yidu.hbatsams.utils.AtsBaseItemTree;
import com.yidu.hbatsams.utils.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * @描述：
 * @ClassName:hbats
 * @backage:com.yidu.hbats.action.atsData
 * @Date:2019 2019/10/31 9:14
 * @Author:易嵘
 **/
@Controller
@RequestMapping("/atsData")
public class AtsDataController {

    Logger logger= LoggerFactory.getLogger(getClass());
    /**
     * 运动员service
     */
    @Resource
    private AtsEmpAthleteService atsEmpAthleteService;

    /**
     * 数据录入service
     */
    @Resource
    private AtsDataService atsDataService;

    /**
     * 指标service
     */
    @Resource
    private AtsBaseItemService atsBaseItemService;
    /**
     * 体育项目关联指标service
     */
    @Resource
    private AtsBaseSportItemService atsBaseSportItemService;

    /**
     *体育项目service
     */
    @Resource
    private AtsBaseSportMapper atsBaseSportService;

    /**
     * 数据批次service
     */
    @Resource
    private AtsDataBatchService atsDataBatchService;

    /**
     * 根据教练员ID查询旗下的所有运动员
     * @return 运动员集合
     */
    @RequestMapping("selectAthleteAll")
    @ResponseBody
    public List<AtsEmpAthlete> selectAthleteAll(AtsEmpAthlete atsEmpAthlete){
        return atsEmpAthleteService.findAll(atsEmpAthlete);
    }

    /**
     * 存入实际指标数据
     * @param request 请求
     * @param atsData 所有指标数据
     * @return 存储状态
     */
    @RequestMapping("addAtsData")
    @ResponseBody
    public Message addAtsData(HttpServletRequest request, @RequestParam(value = "atsData[]",required =false)String[] atsData, AtsDataBatch atsDataBatch){
        return atsDataService.addAtsData(request,atsData,atsDataBatch);
    }

    /**
     * 根据体育项目ID查询体育项目
     * @param sportId 体育项目ID
     * @return 体育项目
     */
    @RequestMapping("selectAtsBaseSportById")
    @ResponseBody
    public AtsBaseSport selectAtsBaseSportById(Integer sportId){
        return atsBaseSportService.selectByPrimaryKey(sportId);
    }


    /**
     * 根据体育项目查询指标
     * @param sportId 体育项目ID
     * @return 树状参数
     */
    @RequestMapping("selectAtsBaseItem")
    @ResponseBody
    public List<AtsBaseItemTree> selectAtsBaseItem(Integer sportId){
        List<AtsBaseSportItem> atsBaseItemList=atsBaseSportItemService.selectId(sportId);
        //新建树状图工具集合
        List<AtsBaseItemTree> atsBaseItemTreeList=new ArrayList<>();
        //循环数据库数据
        for (AtsBaseSportItem atsBaseSportItem : atsBaseItemList) {
            if(atsBaseSportItem.getAtsBaseItem()!=null){
                AtsBaseItemTree atsBaseItemTree=new AtsBaseItemTree();
                //当前id
                atsBaseItemTree.setId(atsBaseSportItem.getAtsBaseItem().getItemId().toString());
                //名称
                atsBaseItemTree.setName(atsBaseSportItem.getAtsBaseItem().getItemExp());
                //名称
                atsBaseItemTree.setTitle(atsBaseSportItem.getAtsBaseItem().getItemUnit());
                //外键
                atsBaseItemTree.setValue(atsBaseSportItem.getAtsBaseItem().getParentId().toString());
                //存入树状图工具集合
                atsBaseItemTreeList.add(atsBaseItemTree);
            }
        }
        //调用树状图工具方法
        return atsBaseItemService.createTree(atsBaseItemTreeList);
    }

    /**
     * 根据用户ID和体育项目查询暂存数据
     * @param atsDataBatch 数据批次
     * @return 实际数据
     */
    @RequestMapping("atsDataGive")
    @ResponseBody
    public AtsDataBatch atsDataGive(AtsDataBatch atsDataBatch){
        atsDataBatch.setIsva(2);
        return atsDataBatchService.selectAtsDataCondition(atsDataBatch);
    }

    /**
     * 根据用户ID和体育项目查询暂存数据
     * @param batchId 数据批次ID
     * @return 实际数据
     */
    @RequestMapping("atsDataByIdBatch")
    @ResponseBody
    public List<AtsData> atsDataByIdBatch(Integer batchId){
        return atsDataService.atsDataByIdBatch(batchId);
    }

    /**
     * 判断批次名是否相同
     * @param athleteId 运动员ID
     * @param batchName 批次名称
     * @return 状态
     */
    @RequestMapping("atsDataCompare")
    @ResponseBody
    public Message atsDataCompare(Integer athleteId,String batchName){
        Message message=new Message();
        int rows=atsDataBatchService.atsDataCompare(athleteId,batchName);
        if(rows>0){
            message.setNum(1);
            message.setMsg("批次已存在，请修改批次名");
        }else{
            message.setNum(0);
        }
        return message;
    }

}
